package com.cdtu.sys.controller;


import com.cdtu.sys.domain.Menu;
import com.cdtu.sys.domain.User;
import com.cdtu.sys.service.IMenuService;
import com.cdtu.sys.utils.SysConstant;

import com.cdtu.sys.utils.TreeNode;
import com.cdtu.sys.utils.TreeNodeBuilder;
import com.cdtu.sys.utils.WebUtils;

import com.cdtu.sys.vo.MenuVo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;


@RestController
@RequestMapping("menu")
public class MenuController {

    @Resource
    private IMenuService menuService;

    //创建加载菜单栏的方法
    @RequestMapping("loadIndexLeftMenuJson")
    public List<TreeNode> loadIndexLeftMenuJson(MenuVo menuVo){
        //从Session中获取当前登录的用户
        User user = (User) WebUtils.getHttpSession().getAttribute("user");
        menuVo.setAvailable(SysConstant.AVAILABLE_TRUE);

        List<Menu> list = null;
        //判断用户的类型
        if(user.getType().equals(SysConstant.USER_TYPE_SUPER)){
            //如果用户类型是管理员，查询所有的菜单
            list =   menuService.queryAllMenuForList(menuVo);
        }else{
            //@TODO 用户如果不是管理员，展示的菜单也是不同的，添加权限的时候再说

        }

        //声明返回List<TreeNode>对象，给该对象赋值
        List<TreeNode> nodes = new ArrayList<>();
        for(Menu menu : list){
            Integer id =  menu.getId();
            Integer pid = menu.getPid();
            String title = menu.getTitle();
            String icon = menu.getIcon();
            String href = menu.getHref();
            Boolean spread = menu.getSpread().equals(SysConstant.SPREAD_TRUE);
            String target = menu.getTarget();
            nodes.add(new TreeNode(id,pid,title,icon,href,spread,target));
        }
        return TreeNodeBuilder.builder(nodes,1);
    }


}
